<?php
//一.正则表达式
//1.preg_grep函数
//返回所有包含浮点数的元素
$array = array(1, 2, 3.4, 53, 7.9);
$fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);   //\d匹配数字 +重复一次或更多次 ?重复零次或一次
print_r($fl_array);

//匹配十位到十二位数字,或者三四位开头中间-结尾七八位
echo "<br />";
$preg = '/\d{3,4}-?\d{7,8}/';
$arr = array('043212345678','0431-7654321','1234567866','1234567');
$preg_arr = preg_grep($preg,$arr);
var_dump($preg_arr);

//2.preg_match()和preg_match_all()函数
//2.1preg_match()函数
    //[, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] //偏移量 搜索位
    //模式分隔符后的"i"标记这是一个大小写不敏感的搜索
//查找文本字符串"php"：
echo "<br />";
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
    echo "查找到匹配的字符串 php。";
} else {
    echo "未发现匹配的字符串 php。";
}
//查找单词 "web"：
/* 模式中的 \b 标记一个单词边界，所以只有独立的单词"web"会被匹配，而不会匹配
 * 单词的部分内容比如"webbing" 或 "cobweb" */
echo "<br />";
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
    echo "查找到匹配的字符串。\n";
} else {
    echo "未发现匹配的字符串。\n";
}
echo " ";
if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
    echo "查找到匹配的字符串。\n";
} else {
    echo "未发现匹配的字符串。\n";
}
//获取 URL 中的域名
    // 匹配域名
echo "<br />";
preg_match('/^http:\/\/([^\/]+)/i', "http://www.php.net/index.html", $matches);
    //[^]+匹配所有
var_dump($matches);
$host = $matches[1];

    // 获取域名的后面两部分
echo "<br />";
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "domain name is: {$matches[0]}\n";

//用户名格式：英文大小写字母均可，长度为：5~14个字符：
echo "<br />";
$userName = "LiuBei";
preg_match("/^[a-z]{5,14}$/i", $userName, $matches);
var_dump($matches);

//密码格式：英文大小写字母、数字均可，长度为：8~14个字符
echo "<br />";
$password = "kji1234987";
preg_match("/^[a-z0-9]{8,14}$/i", $password, $matches);
var_dump($matches);

//验证码格式：6位数字
echo "<br />";
$password = "125678";
preg_match("/^[0-9]{6}$/i", $password, $matches);
var_dump($matches);

//2.2preg_match_all()函数
//比配英文句子中的两个字母的单词：
echo "<br />";
$str = 'This is an example!';
$preg = '/\b\w{2}\b/';
    //\w匹配字母或数字或下划线或汉字
$num1 = preg_match_all($preg,$str,$str1);
echo $num1.'<br>';
var_dump($str1);

//查找匹配 与 标签的内容：
echo "<br />";
$userInfo = "Name: <b>PHP</b> <br> 标题: <b>Programming Language</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userInfo, $pat_array);
print_r($pat_array[0]);

//3.preg_replace()函数
//将 javascript 替换为 php：
echo "<br />";
$string = 'javascript 666, easy';
$pattern = '/(\w+) (\d+), (\w+)/i';
$replacement = 'php ${2},$3';
echo preg_replace($pattern, $replacement, $string);

//删除空格字符
echo "<br />";
$str = 'p  h  p  是和网页结合 的 脚本 语言 ';
$str = preg_replace('/\s+/', '', $str);
echo $str;

//将单个UBB粗体b标签转换成html粗体b标签：
echo "<br />";
$string = '[b]wordpress[/b]是一个和流行的cms';
$b_rst = preg_replace('/\[b\](.*)\[\/b\]/i','<b>$1</b>',$string);
echo $b_rst;

//将多个UBB粗体b标签转换成html粗体b标签（高能预警）：
echo "<br />";
$string = '[b]wordpress[/b]是一个和流行的cms，使用[b]php[/b]开发的';
$b_rst = preg_replace('/\[b\](.*?)\[\/b\]/i','<b>$1</b>',$string);
//\[ b \] = 匹配[b]
//preg_replace() 默认就是替换所有符号匹配条件的元素 == /g
echo $b_rst;

//二.数组
//1.PHP 数值数组
//自动分配 ID 键（ID 键总是从 0 开始）：
$searchList = ["百度", "谷歌", "360搜索", "搜搜"];

//人工分配 ID 键：
$searchList[0]="百度";
$searchList[1]="谷歌";
$searchList[2]="360搜索";
$searchList[3]="搜搜";

//创建一个名为 $cars 的数值数组，并给数组分配三个元素,然后打印一段包含数组值的文本：
echo "<br />";
$searchList = ["百度", "谷歌", "360搜索", "搜搜"];
echo "国内常用的搜索引擎： "
    . $searchList[0] . "、"
    . $searchList[1] . "、"
    . $searchList[2] . "、"
    . $searchList[2] . "。";

//2.php关联数组
//方法
$searchUrlList = [
    "baidu" => "https://www.baidu.com",
    "google" => "https://www.google.com",
    "360" => "https://www.so.com",
    "soso" => "https://www.soso.com",
];

$searchUrlList['baidu']="https://www.baidu.com";
$searchUrlList['google']="https://www.google.com";
$searchUrlList['360']="https://www.so.com";
$searchUrlList['soso']="https://www.soso.com";

//示例：
echo "<br />";
$searchUrlList = [
    "baidu" => "https://www.baidu.com",
    "google" => "https://www.google.com",
    "360" => "https://www.so.com",
    "soso" => "https://www.soso.com",
];
echo "soso的网址是：" . $searchUrlList['soso'];

//遍历并打印关联数组中的所有值，您可以使用 foreach 循环，如下所示：
$searchUrlList = [
    "baidu" => "https://www.baidu.com",
    "google" => "https://www.google.com",
    "360" => "https://www.so.com",
    "soso" => "https://www.soso.com",
];
foreach ($searchUrlList as $key => $value) {
    echo $key . "的网址是：" . $value;
    echo "<br />";
}


